﻿Imports System.Collections.Generic
Imports System.Data
Imports Biz
Imports System.Data.SqlClient


''' <summary>
''' Clase de la capa de acceso a datos para el manejo de la entidad Tipo_Medio_Busqueda
''' </summary>
''' <remarks></remarks>
Public Class DALTipo_Medio_Busqueda

    Private Shared m_Instance As DALTipo_Medio_Busqueda
    Private Shared m_Semaforo As New Object
    Private m_TDGTipo_Medio_Busqueda As TDGTipo_Medio_Busqueda


    Public Function Insert(obj As cTipo_Medio_Busqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            iResultado = m_TDGTipo_Medio_Busqueda.Insert(database.Conexion, obj.TMedB_Descrip, obj.DVH, obj.TMedB_Codigo)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.Tipo_Medio_BusquedaFalloAlta(ex)
        End Try

    End Function

    Public Function Update(obj As cTipo_Medio_Busqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGTipo_Medio_Busqueda.Update(database.Conexion, obj.TMedB_Codigo, obj.TMedB_Descrip, obj.DVH)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.Tipo_Medio_BusquedaFalloEditar(ex)
        End Try
    End Function

    Public Function Delete(obj As cTipo_Medio_Busqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGTipo_Medio_Busqueda.Delete(database.Conexion, obj.TMedB_Codigo)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.Tipo_Medio_BusquedaFalloBaja(ex)
        End Try

    End Function

    Public Function Sel(obj As cTipo_Medio_Busqueda) As cTipo_Medio_Busqueda
        Dim dr As SqlDataReader
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGTipo_Medio_Busqueda.Find(database.Conexion, obj.TMedB_Codigo)

            If dr.HasRows Then

                dr.Read()

                obj.TMedB_Codigo = Utils.Convert.ToInt16(dr.GetValue(0))
                obj.TMedB_Descrip = Utils.Convert.ToStr(dr.GetValue(1))
                obj.DVH = Utils.Convert.ToInt32(dr.GetValue(2))

                dr.Close()
            Else
                obj = Nothing
            End If

            database.Desconectar()

            Return obj
        Catch ex As Exception
            Throw New Excepciones.Tipo_Medio_BusquedaFalloBuscar(ex)
        End Try
    End Function

    Public Function SelectAll() As Collection
        Dim dr As SqlDataReader
        Dim colObjetos As Collection
        Dim objAux As cTipo_Medio_Busqueda
        Dim database As cDatabase


        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGTipo_Medio_Busqueda.FindAll(database.Conexion)

            If dr.HasRows Then

                colObjetos = New Collection

                Do While dr.Read

                    objAux = New cTipo_Medio_Busqueda

                    objAux.TMedB_Codigo = Utils.Convert.ToInt16(dr.GetValue(0))
                    objAux.TMedB_Descrip = Utils.Convert.ToStr(dr.GetValue(1))
                    objAux.DVH = Utils.Convert.ToInt32(dr.GetValue(2))

                    colObjetos.Add(objAux)

                Loop

                dr.Close()

            Else

                colObjetos = Nothing

            End If

            database.Desconectar()

            Return colObjetos
        Catch ex As Exception
            Throw New Excepciones.Tipo_Medio_BusquedaFalloConsultar(ex)
        End Try
    End Function

    Public Shared Function Instance() As DALTipo_Medio_Busqueda
        If m_Instance Is Nothing Then
            SyncLock (m_Semaforo)
                If m_Instance Is Nothing Then
                    m_Instance = New DALTipo_Medio_Busqueda
                End If
            End SyncLock
        End If

        Return m_Instance
    End Function

    Private Sub New()
        m_TDGTipo_Medio_Busqueda = TDGTipo_Medio_Busqueda.Instance()
    End Sub

End Class
